漏洞描述
在AyaCMS3.1.2的ajax.php文件中调用了一个文件文件上传函数,该函数未对文件后缀进行过滤,导致任意文件上传,可通过该上传接口上传webshell。
漏洞版本
AyaCMS 3.1.2
环境搭建
nginx 1.5.11
php 5.6.9 nts
mysql 5.7.26
ayacms 3.1.2
漏洞复现
登录后台,位置在
上传一个webshell
通过burp可以看到回显的文件名
上传路径在代码中可以看到在AYA_ROOT
根目录下的upload/~tmp/
路径下,注意这里并不是网站根目录,而是在aya目录下。
1 | 127.0.0.1:805/aya/upload/~tmp/16689195386710.php |
漏洞分析
漏洞点入口在 ajax.php
424行
upload_file
分支中调用了一个upload的函数,我们跟进去
包含了include/uploadifive/uploadifive.php
这个文件,继续跟进
文件上传的关键代码在这个文件中,经过分析,可以发现,并未对上传文件经过任何处理,有一个验证文件后缀的黑名单还被注释掉了,可能是开发者疏忽了,所以可以直接上传php文件。
修复建议
增加文件后缀黑名单,对上传文件内容做验证。